﻿/*
 * 
 *  文件名 ：Student.cs
 *  类  名 ：XHCTMS.BLL.Student
 * 
 *  创建人 ：张夏
 *  创建时间 ：2013-05-22
 *  备注 ：对数据库学生表的增删改查 BLL层。
 *  
 */


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;

namespace XHCTMS.BLL
{
    /// <summary>
    /// 学生实体在上数据库的操作
    /// </summary>
    public class Student
    {

        /// <summary>
        /// 获取部分在校学生信息
        /// </summary>
        /// <param name="part">页数（1开始，每页30条记录）</param>
        /// <returns>返回类型 DataTable  异常/null</returns>
        public DataTable GetPart(int part)
        {       
            if (part <= 0)
            {
                part = 1;
            }
            return new DAL.Student().GetPart(part);
        }

        /// <summary>
        /// 增加学生
        /// </summary>
        /// <param name="stu">学生实例</param>
        /// <returns>返回结果：int  增加成功/1； 失败/0； 异常/-1；存在新华学号/-3
        /// 新华学号空/-11； 姓名空/-12； 性别空/-13； 班级号空/-14</returns>
        public int Add(MODEL.Student stu)
        {
            
            return new DAL.Student().Add(stu);
        }


        /// <summary>
        /// 增加学生
        /// </summary>
        /// <param name="xHStuID">新华学号</param>
        /// <param name="stuName">姓名</param>
        /// <param name="stuGender">性别</param>
        /// <param name="stuPersonID">身份证号</param>
        /// <param name="stuClassID">班级名</param>
        /// <param name="stuState">在校状况（0：毕业； 1：在校； 2：休学）</param>
        /// <returns>返回结果：int  增加成功/1； 失败/0； 异常/-1；无班级/-2;
        /// 新华学号空/-11； 姓名空/-12； 性别空/-13； 班级号空/-14</returns>
        public int Add(string xHStuID, string stuName, string stuGender,
            string stuPersonID, int stuClassID)
        {
            return new DAL.Student().Add(xHStuID, stuName, stuGender, stuPersonID, stuClassID );
        }

       

        /// <summary>
        /// 修改学生信息
        /// </summary>
        /// <param name="stuID">学生号</param>
        /// <param name="xHStuID">新华学号</param>
        /// <param name="stuName">姓名</param>
        /// <param name="stuGender">性别</param>
        /// <param name="stuPersonID">身份证</param>
        /// <param name="stuClassID">班级名</param>
        /// <param name="stuState">在校状况（0：毕业； 1：在校； 2：休学； 3开除）</param>
        /// <returns>返回结果int  成功/1； 失败/0； 异常/-1；无班级/-2;
        /// 新华学号空/-11； 姓名空/-12； 性别空/-13； 班级号空/-14</returns>
        public int Alter(int stuID, string xHStuID, string stuName, int stuClassID, string stuState)
        {
            int stuFlag =1;
            switch (stuState)
            {
                case "在校":
                    stuFlag = 1;
                    break;
                case "休学":
                    stuFlag = 2;
                    break;
                case "毕业":
                    stuFlag = 0;
                    break;
            }
            return new DAL.Student().Alter(stuID, xHStuID, stuName, stuClassID, stuFlag);
        }

        /// <summary>
        /// 查找学生
        /// </summary>
        /// <param name="parasValue">查找参数（新华学号，学生名，专业名，专业学制, 班级名，班主任名）
        /// 若后面没有可以不填 如{a}</param>
        /// <returns>返回结果DataTable </returns>
        public DataTable Search(string xhStuID ,string stuName,string subName,string subYears ,string className,string teaName)
        {
            string[] parasValue = { xhStuID, stuName, subName, subYears,className, teaName };
            return new DAL.Student().Search(parasValue);
        }
        public DataTable Search(string[] parasValue, int page=1)
        {
            return new DAL.Student().Search(parasValue,page);
        }
        
        /// <summary>
        /// 获得所有满足条件的学生数量
        /// </summary>
        /// <param name="parasValue">学生属性参数(新华学号，学生名，专业名，专业学制, 班级名，班主任名)</param>
        /// <returns></returns>
        public int MaxPage(string xhStuID = null, string stuName = null, string subName = null,
            string subYears = null, string className = null, string teaName = null)
        {
            string[] parasValue = { xhStuID, stuName, subName, subYears, className, teaName };
            return (new DAL.Student().MaxPage(parasValue)-1)/50 +1;
        }

        public int MaxPage(string[] parasValue)
        {
            return (new DAL.Student().MaxPage(parasValue)-1)/50 +1;
        }



        /// <summary>
        /// 学生毕业
        /// </summary>
        /// <param name="stuID"></param>
        /// <returns></returns>
        public int StuGraduation(int stuID)
        {
            return new DAL.Student().StuGraduation(stuID);
        }
    }
}
